Express.js என்றால் என்ன?
Express.js (அல்லது வெறுமனே Express) என்பது வலை பயன்பாடுகள் மற்றும் APIகளை உருவாக்க வடிவமைக்கப்பட்ட மிகவும் பிரபலமான Node.js வலை பயன்பாட்டுக் கட்டமைப்பாகும்.
இது பெரும்பாலும் Node.js க்கான நடைமுறை தரநிலை சர்வர் கட்டமைப்பு என்று அழைக்கப்படுகிறது.
முக்கிய பண்புகள்:
குறைந்தபட்ச மற்றும் நெகிழ்வான
அடிப்படை அம்சங்களை மட்டுமே வழங்குகிறது
கருத்து இல்லாத
உங்கள் பயன்பாட்டை எவ்வாறு கட்டமைப்பது என்பதை நீங்கள் தீர்மானிக்கிறீர்கள்
இலகுவான மற்றும் வேகமான
குறைந்த மேலோட்டம் மற்றும் அதிவேக செயல்திறன்
மிடில்வேர் மூலம் விரிவாக்கக்கூடிய
மிடில்வேர் செயல்பாடுகள் மூலம் செயல்பாட்டை விரிவுபடுத்தவும்
பெரிய சூழல்
பிளக்கின்கள் மற்றும் நீட்டிப்புகளின் மிகப்பெரிய சூழல்
ஏன் Express.js ஐத் தேர்ந்தெடுக்க வேண்டும்?
Express அடிப்படை வலை பயன்பாட்டு அம்சங்களின் ஒரு மெல்லிய அடுக்கை Node.js அம்சங்களை மறைக்காமல் வழங்குகிறது.
இது வழங்குகிறது:
- ஒரு வலுவான ரூட்டிங் அமைப்பு
- HTTP உதவிகள் (திருப்பி அனுப்புதல், கேசிங், முதலியன)
- HTTP கோரிக்கைகளுக்கு பதிலளிக்க மிடில்வேர் ஆதரவு
- டைனமிக் HTML ரெண்டரிங்கிற்கான டெம்ப்ளேட் இயந்திரம்
- பிழை கையாளுதல் மிடில்வேர்
Express உடன் தொடங்குதல்
Express ஏதேனும் Node.js திட்டத்தில் சேர்க்கப்படலாம். ஒரு புதிய Express பயன்பாட்டைத் தொடங்குவது எப்படி என்பது இங்கே.
முன்நிபந்தனைகள்
நீங்கள் தொடங்குவதற்கு முன், உங்களிடம் இருப்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்:
- Node.js நிறுவப்பட்டது (v14.0.0 அல்லது பின்னர் பரிந்துரைக்கப்படுகிறது)
- npm (Node.js உடன் வரும்) அல்லது yarn
- ஒரு குறியீடு எடிட்டர் (VS Code, WebStorm, முதலியன)
Express ஐ நிறுவுதல்
உங்கள் Node.js பயன்பாட்டில் Express ஐப் பயன்படுத்த, முதலில் அதை நிறுவ வேண்டும்:
npm install express
Express ஐ நிறுவி உங்கள் package.json சார்புகளில் சேமிக்க:
npm install express --save
Hello World எடுத்துக்காட்டு
Express உடன் ஒரு எளிய "Hello World" பயன்பாட்டை உருவாக்குவோம்.
இந்த எடுத்துக்காட்டு ஒரு Express பயன்பாட்டின் அடிப்படை கட்டமைப்பை நிரூபிக்கிறது.
முக்கிய கூறுகள்:
- Express தொகுதியை இறக்குமதி செய்தல்
- Express பயன்பாட்டு நிகழ்வை உருவாக்குதல்
- ரூட்டுகளை வரையறுத்தல்
- சர்வரைத் தொடங்குதல்
const express = require('express');
const app = express();
const port = 8080;
// Define a route for GET requests to the root URL
app.get('/', (req, res) => {
res.send('Hello World from Express!');
});
// Start the server
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
இந்த குறியீட்டை app.js என்ற கோப்பில் சேமித்து Node.js உடன் இயக்கவும்:
node app.js
பின்னர், உங்கள் உலாவியைத் திறந்து http://localhost:8080 க்குச் சென்று "Hello World" செய்தியைப் பார்க்கவும்.
அடிப்படை ரூட்டிங்
ரூட்டிங் என்பது வெவ்வேறு HTTP முறைகளைப் (GET, POST, PUT, DELETE, முதலியன) பயன்படுத்தி குறிப்பிட்ட இறுதிப் புள்ளிகளுக்கு (URIகள்) கிளையன்ட் கோரிக்கைகளுக்கு ஒரு பயன்பாடு எவ்வாறு பதிலளிக்கிறது என்பதைக் குறிக்கிறது.
Express HTTP முறைகளுடன் தொடர்புடைய ரூட்டுகளை வரையறுக்க எளிய முறைகளை வழங்குகிறது:
- app.get() - GET கோரிக்கைகளைக் கையாளவும்
- app.post() - POST கோரிக்கைகளைக் கையாளவும்
- app.put() - PUT கோரிக்கைகளைக் கையாளவும்
- app.delete() - DELETE கோரிக்கைகளைக் கையாளவும்
- app.all() - அனைத்து HTTP முறைகளையும் கையாளவும்
const express = require('express');
const app = express();
const port = 8080;
// Respond to GET request on the root route
app.get('/', (req, res) => {
res.send('GET request to the homepage');
});
// Respond to POST request on the root route
app.post('/', (req, res) => {
res.send('POST request to the homepage');
});
// Respond to GET request on the /about route
app.get('/about', (req, res) => {
res.send('About page');
});
// Catch all other routes
app.all('*', (req, res) => {
res.status(404).send('404 - Page not found');
});
// Start the server
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
ரூட் அளவுருக்கள்
ரூட் அளவுருக்கள் URL இல் குறிப்பிட்ட நிலைகளில் மதிப்புகளைப் பிடிக்கும் பெயரிடப்பட்ட URL பிரிவுகளாகும்.
அவை பாதையில் ஒரு கோலன் : முன்னொட்டுடன் குறிப்பிடப்படுகின்றன.
எடுத்துக்காட்டு: /users/:userId/books/:bookId
இந்த எடுத்துக்காட்டில், userId மற்றும் bookId ஆகியவை req.params மூலம் அணுகக்கூடிய ரூட் அளவுருக்களாகும்.
const express = require('express');
const app = express();
const port = 8080;
// Route with parameters
app.get('/users/:userId/books/:bookId', (req, res) => {
// Access parameters using req.params
res.send(`User ID: ${req.params.userId}, Book ID: ${req.params.bookId}`);
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
வினா அளவுருக்கள்
வினா அளவுருக்கள் ஒரு URL இல் ? க்குப் பிறகு தோன்றும் விசை-மதிப்பு ஜோடிகளாகும்.
அவை Express மூலம் தானாகவே பாகுபடுத்தப்பட்டு req.query இல் கிடைக்கின்றன.
எடுத்துக்காட்டு URL: http://example.com/search?q=express&page=2
இந்த URL இல், q=express மற்றும் page=2 ஆகியவை req.query.q மற்றும் req.query.page ஆக அணுகக்கூடிய வினா அளவுருக்களாகும்.
const express = require('express');
const app = express();
const port = 8080;
// Route handling query parameters
app.get('/search', (req, res) => {
// Access query parameters using req.query
const { q, category } = req.query;
res.send(`Search query: ${q}, Category: ${category || 'none'}`);
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
இந்த ரூட்டை இதுபோன்ற URL உடன் அணுகவும்: http://localhost:8080/search?q=express&category=framework
Express இல் மிடில்வேர்
மிடில்வேர் செயல்பாடுகள் Express பயன்பாடுகளின் முதுகெலும்பாகும்.
அவை அணுகலைக் கொண்டுள்ளன:
- கோரிக்கை பொருள் (req)
- பதில் பொருள் (res)
- ஸ்டாக்கில் அடுத்த மிடில்வேர் செயல்பாடு (next)
மிடில்வேர் முடியும்:
- எந்த குறியீட்டையும் இயக்கவும்
- கோரிக்கை மற்றும் பதில் பொருள்களை மாற்றியமைக்கவும்
- கோரிக்கை-பதில் சுழற்சியை முடிக்கவும்
- ஸ்டாக்கில் அடுத்த மிடில்வேரை அழைக்கவும்
உள்ளமைக்கப்பட்ட மிடில்வேர்
Express பல பயனுள்ள மிடில்வேர் செயல்பாடுகளை உள்ளடக்கியது:
- express.json() - JSON கோரிக்கை உடல்களைப் பாகுபடுத்தவும்
- express.urlencoded() - URL-குறியிடப்பட்ட கோரிக்கை உடல்களைப் பாகுபடுத்தவும்
- express.static() - நிலையான கோப்புகளைச் சேவை செய்யவும்
- express.Router() - மாடுலர் ரூட் கையாளுநர்களை உருவாக்கவும்
const express = require('express');
const app = express();
const port = 8080;
// Middleware to parse JSON request bodies
app.use(express.json());
// Middleware to parse URL-encoded request bodies
app.use(express.urlencoded({ extended: true }));
// Middleware to serve static files from a directory
app.use(express.static('public'));
// POST route that uses JSON middleware
app.post('/api/users', (req, res) => {
// req.body contains the parsed JSON data
console.log(req.body);
res.status(201).json({ message: 'User created', user: req.body });
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
Express இல் பிழை கையாளுதல்
Express இல் பிழை கையாளுதல் நான்கு வாதங்களைக் கொண்ட சிறப்பு மிடில்வேர் செயல்பாடுகள் மூலம் செய்யப்படுகிறது:
(err, req, res, next).
முக்கிய புள்ளிகள்:
- பிழை-கையாளும் மிடில்வேர் நான்கு வாதங்களைக் கொண்டிருக்க வேண்டும்
- இது மற்ற app.use() மற்றும் ரூட் அழைப்புகளுக்குப் பிறகு வரையறுக்கப்பட வேண்டும்
- உங்களிடம் பல பிழை-கையாளும் மிடில்வேர் செயல்பாடுகள் இருக்கலாம்
- அடுத்த பிழை கையாளுநருக்கு பிழைகளை அனுப்ப next(err) ஐப் பயன்படுத்தவும்
கோரிக்கை செயலாக்கத்தின் போது ஏற்படும் பிழைகளைப் பிடிக்க Express இயல்புநிலை பிழை கையாளுநருடன் வருகிறது:
const express = require('express');
const app = express();
const port = 8080;
// Route that may throw an error
app.get('/error', (req, res) => {
// Simulating an error
throw new Error('Something went wrong!');
});
// Route that uses next(error) for asynchronous code
app.get('/async-error', (req, res, next) => {
// Simulating an asynchronous operation that fails
setTimeout(() => {
try {
// Something that might fail
const result = nonExistentFunction(); // This will throw an error
res.send(result);
}
catch (error) {
next(error); // Pass errors to Express
}
}, 100);
});
// Custom error handling middleware
// Must have four parameters to be recognized as an error handler
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
நிலையான கோப்புகளைச் சேவை செய்தல்
Express உள்ளமைக்கப்பட்ட express.static மிடில்வேர் பயன்படுத்தி படங்கள், CSS, மற்றும் JavaScript போன்ற நிலையான கோப்புகளைச் சேவை செய்ய முடியும்.
சிறந்த நடைமுறைகள்:
- நிலையான கோப்புகளை ஒரு அர்ப்பணிக்கப்பட்ட அடைவில் வைக்கவும் (பொதுவாக public அல்லது static)
- உங்கள் ரூட்டுகளுக்கு முன் நிலையான மிடில்வேரை ஏற்றவும்
- சிறந்த செயல்திறனுக்கு உற்பத்தியில் CDN பயன்படுத்தக் கருதுங்கள்
- நிலையான சொத்துகளுக்கு பொருத்தமான கேச் தலைப்புகளை அமைக்கவும்
படங்கள், CSS கோப்புகள் மற்றும் JavaScript கோப்புகள் போன்ற நிலையான கோப்புகளைச் சேவை செய்ய, உள்ளமைக்கப்பட்ட express.static மிடில்வேர் செயல்பாட்டைப் பயன்படுத்தவும்:
const express = require('express');
const path = require('path');
const app = express();
const port = 8080;
// Serve static files from the 'public' directory
app.use(express.static('public'));
// You can also specify a virtual path prefix
app.use('/static', express.static('public'));
// Using absolute path (recommended)
app.use('/assets', express.static(path.join(__dirname, 'public')));
app.get('/', (req, res) => {
res.send(`
Static Files Example
`);
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
இது உங்கள் ஸ்கிரிப்ட்டின் அதே அடைவில் படங்கள், CSS மற்றும் JavaScript கோப்புகளுக்கான துணை அடைவுகளுடன் public என்ற பெயரில் ஒரு அடைவு உள்ளது என்று கருதுகிறது.
தனி கோப்புகளில் ரூட்டிங்
சிறந்த அமைப்பிற்கு, Express Router ஐப் பயன்படுத்தி தனி கோப்புகளில் ரூட்டுகளை வரையறுக்கலாம்:
routes/users.js
const express = require('express');
const router = express.Router();
// Middleware specific to this router
router.use((req, res, next) => {
console.log('Users Router Time:', Date.now());
next();
});
// Define routes
router.get('/', (req, res) => {
res.send('Users home page');
});
router.get('/:id', (req, res) => {
res.send(`User profile for ID: ${req.params.id}`);
});
module.exports = router;
routes/products.js
const express = require('express');
const router = express.Router();
// Define routes
router.get('/', (req, res) => {
res.send('Products list');
});
router.get('/:id', (req, res) => {
res.send(`Product details for ID: ${req.params.id}`);
});
module.exports = router;
app.js (முக்கிய கோப்பு)
const express = require('express');
const usersRouter = require('./routes/users');
const productsRouter = require('./routes/products');
const app = express();
const port = 8080;
// Use the routers
app.use('/users', usersRouter);
app.use('/products', productsRouter);
app.get('/', (req, res) => {
res.send('Main application home page');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
டெம்ப்ளேட் இயந்திரங்கள்
டைனமிக் HTML ஐ உருவாக்க Express டெம்ப்ளேட் இயந்திரங்களுடன் கட்டமைக்கப்படலாம்:
const express = require('express');
const app = express();
const port = 8080;
// Set the view engine to EJS
app.set('view engine', 'ejs');
// Set the directory where templates are located
app.set('views', './views');
// Route that renders a template
app.get('/', (req, res) => {
const data = {
title: 'Express Template Example',
message: 'Hello from EJS!',
items: ['Item 1', 'Item 2', 'Item 3']
};
// Renders the views/index.ejs template
res.render('index', data);
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
இந்த எடுத்துக்காட்டைப் பயன்படுத்த, நீங்கள் EJS டெம்ப்ளேட் இயந்திரத்தை நிறுவ வேண்டும்:
npm install ejs
மற்றும் views/index.ejs இல் ஒரு கோப்பை உருவாக்கவும்:
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
</head>
<body>
<h1><%= title %></h1>
<p><%= message %></p>
<h2>Items:</h2>
<ul>
<% items.forEach(function(item) { %>
<li><%= item %></li>
< % }); %>
</ul>
</body>
</html>
Express பயன்பாட்டு ஜெனரேட்டர்
Express பயன்பாட்டு ஜெனரேட்டர் என்பது ஒரு கருவியாகும், இது ஒரு Express பயன்பாட்டு எலும்புக்கூட்டை விரைவாக உருவாக்க உதவுகிறது.
முக்கிய அம்சங்கள்:
- நன்கு கட்டமைக்கப்பட்ட பயன்பாட்டை உருவாக்குகிறது
- வளர்ச்சி சூழலை அமைக்கிறது
- பொதுவான மிடில்வேரை கட்டமைக்கிறது
- பிழை கையாளுதலை உள்ளடக்கியது
- பல்வேறு டெம்ப்ளேட் இயந்திரங்களை ஆதரிக்கிறது
நிறுவல்: npm install -g express-generator
பயன்பாடு: express --view=pug myapp
Express ஒரு பயன்பாட்டு ஜெனரேட்டர் கருவியை வழங்குகிறது, இது விரைவாக ஒரு பயன்பாட்டு எலும்புக்கூட்டை உருவாக்க உதவுகிறது:
# Install the generator globally
npm install -g express-generator
# Create a new Express application
express --view=ejs myapp
# Navigate to the app directory
cd myapp
# Install dependencies
npm install
# Start the app
npm start
இது பின்வரும் அடைவு கட்டமைப்புடன் ஒரு பயன்பாட்டை உருவாக்குகிறது:
myapp/
├── app.js
├── bin/
│ └── www
├── package.json
├── public/
│ ├── images/
│ ├── javascripts/
│ └── stylesheets/
│ └── style.css
├── routes/
│ ├── index.js
│ └── users.js
└── views/
├── error.ejs
└── index.ejs
Express.js சிறந்த நடைமுறைகள்
வலுவான, பராமரிக்கக்கூடிய Express பயன்பாடுகளை உருவாக்க இந்த சிறந்த நடைமுறைகளைப் பின்பற்றவும்:
திட்ட கட்டமைப்பு
உங்கள் குறியீட்டை அம்சம் அல்லது கூறு மூலம் ஒழுங்கமைக்கவும்
சூழல் மாறிகள்
கட்டமைப்பிற்கு dotenv ஐப் பயன்படுத்தவும்
பிழை கையாளுதல்
பிழை கையாளுதலை மையப்படுத்தவும்
லாக்கிங்
morgan அல்லது winston போன்ற லாக்கிங் நூலகத்தைப் பயன்படுத்தவும்
பாதுகாப்பு
பாதுகாப்பு சிறந்த நடைமுறைகளை செயல்படுத்தவும் (helmet, விகித வரம்பு, முதலியன)
சரிபார்ப்பு
express-validator போன்ற நூலகங்களைப் பயன்படுத்தி உள்ளீட்டைச் சரிபார்க்கவும்
பாதுகாப்பு சிறந்த நடைமுறைகள்
const express = require('express');
const helmet = require('helmet');
const cors = require('cors');
const app = express();
// Security middleware
app.use(helmet());
// CORS configuration
app.use(cors({
origin: 'https://example.com',
methods: ['GET', 'POST'],
allowedHeaders: ['Content-Type', 'Authorization']
}));
// Other middleware and routes
// ...